/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.notaria.guerrasalas.bc;

import com.notaria.guerrasalas.be.ClienteNatural;
import gob.satt.comun.jpa.Command;
import java.util.List;
import javax.persistence.EntityManager;
import oracle.toplink.essentials.config.HintValues;
import oracle.toplink.essentials.config.TopLinkQueryHints;

/**
 *
 * @author Administrador
 */
public class ListarEmpleadosCommand implements Command<List<ClienteNatural>>{

    private String nombresApellidos;

    public ListarEmpleadosCommand(String nombresApellidos) {
        this.nombresApellidos = nombresApellidos;
    }

    @Override
    public List<ClienteNatural> execute(EntityManager em) throws Exception {
        List<ClienteNatural> clientes = null;
        if (nombresApellidos != null && !nombresApellidos.trim().equals("")) {
            clientes = (List<ClienteNatural>) em.createQuery("SELECT object(o) FROM ClienteNatural o WHERE UPPER(o.nombres) Like :nombres or UPPER(o.apellidoPaterno) Like :apPaterno or UPPER(o.apellidoMaterno) Like :apMaterno and o.esEmpleado=:esEmpleado")
                    .setParameter("nombres", "%" + nombresApellidos.toUpperCase() + "%")
                    .setParameter("apPaterno", "%" + nombresApellidos.toUpperCase() + "%")
                    .setParameter("apMaterno", "%" + nombresApellidos.toUpperCase() + "%")
                    .setParameter("esEmpleado", true)
                    .setHint(TopLinkQueryHints.REFRESH, HintValues.TRUE)
                    .getResultList();
        } else {
            clientes = (List<ClienteNatural>) em.createQuery("SELECT object(o) FROM ClienteNatural o WHERE o.esEmpleado=:esEmpleado")
                    .setHint(TopLinkQueryHints.REFRESH, HintValues.TRUE)
                    .setParameter("esEmpleado", true)
                    .getResultList();
        }
        return clientes;
    }



}
